package com.dapeis.core.utils.json;

import java.lang.reflect.Type;
import java.text.DecimalFormat;
import java.util.Date;

import org.apache.commons.lang.text.StrBuilder;

import com.ag.utils.DateUtils;
import com.dapeis.core.utils.DBConfigUtils;
import com.dapeis.core.utils.StylistConstants;
import com.dapeis.domain.ext.MoneyLogExt;
import com.dapeis.exception.moneyLog.SysMoneyLogException;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;

/**
 * @author 作者 E-mail: hzyuanyong@126.com
 * @version 创建时间：2017年5月24日 下午5:31:38 类说明
 */
public class MoneyLogExtGsonAdapter implements JsonSerializer<MoneyLogExt> {

    @Override
    public JsonElement serialize(MoneyLogExt src, Type typeOfSrc,
	    JsonSerializationContext context) {
	JsonObject json = new JsonObject();
	json.addProperty("time", DateUtils.format("MM-dd HH:mm",new Date(src.getCreateTime()*1000)));
	json.addProperty("sorceType", src.getSourceType());
	json.addProperty("content", getContent(src));
	json.addProperty("money", paserMoney(src.getMoney()));
	json.addProperty("status",
		DBConfigUtils.getMoneyLogStatus(src.getStatus()));
	return json;
    }

    public String getContent(MoneyLogExt ext) {
	if (ext.getType().equals(StylistConstants.MoneyLog.Type.INCOME)) {
	    if (ext.getSourceType().equals(
		    StylistConstants.MoneyLog.Source.AWARD)) {
		return new StrBuilder()
			.append(ext.getUser().getNickName())
			.append("打赏您的方案(")
			.append(null == ext.getPlantitle() ? "" : ext
				.getPlantitle()).append(")")
			.append(paserMoney(ext.getMoney())).append("元")
			.toString();
	    } else
		return new StringBuffer()
			.append("为")
			.append(ext.getUser().getNickName())
			.append("提供")
			.append(DBConfigUtils.getTypeNameForMoneyLog(ext
				.getSourceType())).append("服务,收入")
			.append(paserMoney(ext.getMoney())).append("元")
			.toString();
	}
	if (ext.getSourceType() == StylistConstants.MoneyLog.Source.OUTLAY) {
	    return new StringBuffer().append("您申请一笔提现,金额：")
		    .append(paserMoney(ext.getMoney())).append("元").toString();
	}
	return "";
    }

    public String paserMoney(Object _price) {
	if (null == _price || _price == "")
	    return "0";
	else {
	    Integer price = new Integer(_price.toString());
	    DecimalFormat decimalFormat = new DecimalFormat("0.00");
	    Float priceFloat = new Float(price);
	    String pasStr = decimalFormat.format(priceFloat / 100);
	    return pasStr;
	}
    }

}
